API de Hierarquia - Documentação Completa
📋 Visão Geral
A API de Hierarquia é responsável por fornecer consultas estruturadas e navegação hierárquica no sistema CordenaAi, implementando a estrutura organizacional completa: Instituições → Unidades → Turmas → Horários → Alunos. Esta API permite navegação eficiente através dos níveis hierárquicos, facilitando a construção de interfaces administrativas, relatórios organizacionais e gestão de estrutura educacional.
🎯 Endpoints Disponíveis
🆕 Novos Endpoints - Consultas Específicas
1. GET /api/hierarquia/horario-completo/{horarioId}
Obter Horário Completo com Hierarquia
- Descrição: Retorna informações completas do horário com dados da hierarquia (turma → unidade → instituição)
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
horarioId (path): ID do horário na tabela HorarioUsuarios
- Resposta: Objeto com dados completos do horário e hierarquia
- Uso: Consulta detalhada de horário, relatórios específicos, debug de dados
2. GET /api/hierarquia/horarios-usuario/{identificacao}
Obter Horários por Usuário
- Descrição: Retorna todos os horários de um usuário específico com informações completas da hierarquia
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificacao (path): ID, email, CPF ou username do usuário
- Resposta: Objeto com dados do usuário e lista de horários
- Uso: Consulta de horários pessoais, relatórios de frequência, gestão de agenda
3. GET /api/hierarquia/debug-horarios
Debug: Listar Todos os Horários
- Descrição: Endpoint de debug que lista todos os horários disponíveis no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Lista completa de HorarioUsuarios e HorarioTurmas
- Uso: Debug, desenvolvimento, identificação de IDs disponíveis
🏗️ Endpoints Existentes - Navegação Hierárquica
4. GET /api/hierarquia/instituicoes
Obter Todas as Instituições
- Descrição: Retorna lista completa de todas as instituições cadastradas no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos com dados das instituições
- Uso: Dashboard administrativo, seleção de instituição, relatórios gerais
5. GET /api/hierarquia/unidades/{idInstituicao}
Obter Unidades por Instituição
- Descrição: Retorna todas as unidades pertencentes a uma instituição específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
idInstituicao (path): ID único da instituição
- Resposta: Array de objetos com dados das unidades
- Uso: Navegação hierárquica, gestão de unidades, relatórios por instituição
6. GET /api/hierarquia/turmas/{idUnidade}
Obter Turmas por Unidade
- Descrição: Retorna todas as turmas pertencentes a uma unidade específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
idUnidade (path): ID único da unidade
- Resposta: Array de objetos com dados das turmas
- Uso: Gestão de turmas, visualização de estrutura educacional, relatórios por unidade
7. GET /api/hierarquia/horarios/{idTurma}
Obter Horários por Turma
- Descrição: Retorna todos os horários e usuários associados a uma turma específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
idTurma (path): ID único da turma
- Resposta: Array de objetos com dados dos horários e usuários
- Uso: Gestão de horários, visualização de cronograma, relatórios de frequência
8. GET /api/hierarquia/turma/{idTurma}/alunos
Obter Alunos por Turma
- Descrição: Retorna todos os alunos/usuários associados a uma turma específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
idTurma (path): ID único da turma
- Resposta: Array de objetos com dados dos alunos
- Uso: Listagem de alunos, gestão de turma, relatórios de presença
9. GET /api/hierarquia/instituicao/{idInstituicao}/completa
Obter Hierarquia Completa da Instituição
- Descrição: Retorna a estrutura hierárquica completa de uma instituição (instituição → unidades → turmas → alunos)
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
idInstituicao (path): ID único da instituição
- Resposta: Objeto com estrutura hierárquica completa
- Uso: Visualização completa da estrutura, relatórios organizacionais, auditoria
10. GET /api/hierarquia/buscar-usuarios
Buscar Usuários na Hierarquia
- Descrição: Busca usuários com base em filtros hierárquicos (instituição, unidade, turma, papel)
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
instituicaoId (query, opcional): ID da instituição
unidadeId (query, opcional): ID da unidade
turmaId (query, opcional): ID da turma
papel (query, opcional): Papel do usuário na turma
- Resposta: Array de objetos com dados dos usuários na hierarquia
- Uso: Busca avançada, filtros hierárquicos, relatórios personalizados
11. GET /api/hierarquia/destinatarios
Obter Contadores de Destinatários
- Descrição: Retorna contadores de todas as entidades para relatórios de destinatários
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Objeto com contadores de todas as entidades
- Uso: Relatórios de comunicados, estatísticas gerais, dashboards
🔧 Modelo de Dados
Estrutura de Instituição
{
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoInstituicao",
"unidadesCount": "integer"
}
Estrutura de Unidade
{
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoUnidade",
"instituicaoNome": "string",
"turmasCount": "integer"
}
Estrutura de Turma
{
"id": "integer",
"nome": "string",
"status": "StatusTurma",
"unidadeNome": "string",
"responsavelNome": "string",
"alunosCount": "integer"
}
Estrutura de Horário
{
"id": "integer",
"turmaId": "integer",
"turmaNome": "string",
"descHorario": "string",
"usuarios": [
{
"id": "integer",
"usuarioId": "string",
"usuarioNome": "string",
"papelId": "integer",
"papelNome": "string"
}
]
}
Estrutura de Aluno
{
"turmaNome": "string",
"usuarioNome": "string",
"usuarioId": "string",
"papelNome": "string",
"horarioDescricao": "string"
}
Estrutura de Hierarquia Completa
{
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoInstituicao",
"unidades": [
{
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoUnidade",
"turmas": [
{
"id": "integer",
"nome": "string",
"status": "StatusTurma",
"alunos": [
{
"usuarioId": "string",
"usuarioNome": "string",
"papelNaTurma": "PapelNaTurma"
}
]
}
]
}
]
}
Estrutura de Usuário na Hierarquia
{
"usuarioId": "string",
"usuarioNome": "string",
"usuarioCelular": "string",
"papelNaTurma": "PapelNaTurma",
"turmaNome": "string",
"unidadeNome": "string",
"instituicaoNome": "string"
}
Estrutura de Destinatários
{
"instituicoes": "integer",
"unidades": "integer",
"turmas": "integer",
"usuarios": "integer",
"cadastros": "integer",
"horarios": "integer"
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a toda hierarquia
- Coordenadores: Acesso limitado às suas unidades/turmas
- Professores: Acesso às suas turmas e alunos
- Responsáveis: Acesso limitado aos dados de seus atletas
📊 Casos de Uso Principais
1. Consulta de Horário Completo
GET /api/hierarquia/horario-completo/123
Authorization: Bearer {token}
2. Horários por Usuário
GET /api/hierarquia/horarios-usuario/usuario@email.com
Authorization: Bearer {token}
3. Debug de Horários
GET /api/hierarquia/debug-horarios
Authorization: Bearer {token}
4. Navegação Hierárquica Completa
GET /api/hierarquia/instituicoes
Authorization: Bearer {token}
5. Exploração por Níveis
GET /api/hierarquia/unidades/1
Authorization: Bearer {token}
6. Visualização de Turma
GET /api/hierarquia/turmas/5
Authorization: Bearer {token}
7. Consulta de Horários
GET /api/hierarquia/horarios/10
Authorization: Bearer {token}
8. Listagem de Alunos
GET /api/hierarquia/turma/10/alunos
Authorization: Bearer {token}
9. Estrutura Completa
GET /api/hierarquia/instituicao/1/completa
Authorization: Bearer {token}
10. Busca Avançada
GET /api/hierarquia/buscar-usuarios?instituicaoId=1&papel=Aluno
Authorization: Bearer {token}
11. Relatório de Destinatários
GET /api/hierarquia/destinatarios
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- IDs de Entidade: Devem existir no sistema
- Hierarquia: Validação de relacionamentos pai-filho
- Permissões: Verificação de acesso baseada em roles
- Parâmetros: Validação de tipos e formatos
Regras de Negócio
- Hierarquia: Instituição → Unidade → Turma → Horário → Aluno
- Navegação: Acesso baseado em permissões hierárquicas
- Ordenação: Resultados ordenados alfabeticamente por nome
- Contadores: Inclusão de contadores de entidades filhas
- Auditoria: Todas as consultas são logadas
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 400: Dados inválidos ou parâmetros incorretos
- 401: Não autorizado
- 403: Acesso negado
- 404: Recurso não encontrado (instituição, unidade, turma)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Consultas retornam todos os registros (sem paginação)
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
- Profundidade: Máximo 4 níveis hierárquicos
Otimizações
- Índices: Consultas otimizadas com índices de relacionamento
- Include: Uso de Include() para carregar relacionamentos
- Compressão: Respostas comprimidas com gzip
- Cache: Dados hierárquicos cacheados por 5 minutos
🔄 Integração com Outros Módulos
Módulos Relacionados
- Instituições: Base para consultas hierárquicas
- Unidades: Estrutura organizacional
- Turmas: Agrupamento educacional
- Usuários: Dados pessoais e funções
- Horários: Cronograma e frequência
- Comunicados: Destinatários baseados na hierarquia
📱 Uso em Aplicações
Web App
- Navegação hierárquica em árvore
- Dashboards organizacionais
- Relatórios por nível hierárquico
- Gestão de estrutura educacional
Mobile App
- Navegação simplificada por níveis
- Visualização de turmas do usuário
- Consulta de horários e colegas
- Relatórios de presença
🛠️ Manutenção e Monitoramento
Logs Importantes
- Consultas de estrutura hierárquica
- Acessos a dados por nível
- Tentativas de acesso não autorizado
- Erros de validação de parâmetros
Métricas Monitoradas
- Número de consultas por endpoint
- Tempo de resposta das consultas
- Uso de cache hierárquico
- Taxa de erro por tipo de consulta
📚 Exemplos Práticos
Fluxo de Consulta Específica
- GET /api/hierarquia/debug-horarios para identificar IDs disponíveis
- GET /api/hierarquia/horario-completo/{id} para dados completos do horário
- GET /api/hierarquia/horarios-usuario/{identificacao} para horários do usuário
Fluxo de Navegação Hierárquica
- GET /api/hierarquia/instituicoes para listar instituições
- GET /api/hierarquia/unidades/{id} para unidades da instituição
- GET /api/hierarquia/turmas/{id} para turmas da unidade
- GET /api/hierarquia/horarios/{id} para horários da turma
Fluxo de Busca Avançada
- GET /api/hierarquia/buscar-usuarios com filtros específicos
- Aplicação de filtros hierárquicos no backend
- Retorno de usuários filtrados com contexto hierárquico
- Exibição de resultados com informações completas
Fluxo de Relatório Completo
- GET /api/hierarquia/instituicao/{id}/completa para estrutura completa
- Processamento de dados hierárquicos
- Geração de relatório organizacional
- Exportação de dados estruturados
🎯 Tipos e Enums
TipoInstituicao
- Matriz (1): Instituição principal
- Filial (2): Instituição secundária
TipoUnidade
- Matriz (1): Unidade principal
- Filial (2): Unidade secundária
StatusTurma
- Ativa (1): Turma em funcionamento
- Inativa (2): Turma desativada
- Suspensa (3): Turma temporariamente suspensa
PapelNaTurma
- Aluno (1): Estudante da turma
- Atleta (2): Atleta da turma
- Professor (3): Professor responsável
- Treinador (4): Treinador da turma
- Coordenador (5): Coordenador da turma
- Monitor (6): Monitor da turma
Versão: 1.0
Última Atualização: Outubro de 2025
Status: ✅ Implementado e Testado
Base URL: /api/hierarquia
Responsável: Equipe de Desenvolvimento CordenaAi